package com.link.base.base.urlinfo.service;


import com.link.base.base.urlinfo.model.UrlEncrypt;
import com.link.base.base.urlinfo.model.UrlInfo;
import com.link.core.basic.service.BasicService;

import java.util.List;
import java.util.Map;

/**
 * url信息 service
 *
 * @author 黄龙建
 * @date 2020/1/8 5:19 下午
 */
public interface UrlInfoService extends BasicService<UrlInfo> {

    /**
     * <p>加载限制访问url到redis</p>
     *
     * @author yrf
     * @throws Exception
     */
    public void loadUrlToRedis() throws Exception;

    /**
     * <p>查询用户间接关联的url</p>
     *
     * @author yrf
     * @param example
     * @return
     */
    public List<UrlInfo> queryUrlByUser(UrlInfo example);


    /**
     * 插入url
     * @author HuangLJ 2018年09月25日
     * @param urlInfos 需要插入的List对象
     * @throws Exception 报错
     */
    public void batchInsertSub(List<UrlInfo> urlInfos, String moduleName, Map<String, UrlInfo> map) throws Exception;

    /**
     * 加密url
     * @author LiQun
     * @date 2018/12/13
     * @param urlEncrypt 加密对象
     * @return 加密的字符串
     * @throws Exception 异常信息
     */
    public String encryptUrl(UrlEncrypt urlEncrypt) throws Exception;

    /**
     * 解密url
     * @author LiQun
     * @date 2018/12/13
     * @param urlEncrypt 加密对象
     * @return 解密的字符串
     * @throws Exception 异常信息
     */
    public String decryptUrl(UrlEncrypt urlEncrypt) throws Exception;

    /**
     * 加密url
     * @author LiQun
     * @date 2018/12/13
     * @param urlParam 包含参数的url
     * @return 加密的字符串
     * @throws Exception 异常信息
     */
    public Map<String, Object> getUrlParams(String urlParam) throws Exception;


    /**
     * @author HuangLJ
     * @date 2019-02-25 17:10
     * @param
     * @return
     * @throws Exception 报错
     * @comments 把默认的url信息写入到全局变量里面去
     */
    public void setDefUrlCache() throws Exception;

    /**
     * 根据url的list查找对应的url对象
     *
     * @author cuizhiyong
     * @param list url的list
     * @date 2019/4/10 10:10
     * @return list 其中每个对象仅包含id和url两个字段
     */
    List<UrlInfo> listInUrlInfo(List<String> list) throws Exception;

    void updateUrl() throws Exception;

    UrlInfo queryByUrl(String url);
}
